package com.wjw.java.collection.list_;

import java.util.ArrayList;
import java.util.List;

/**
 * List接口是Collection接口的子类：
 * List接口的实现类有：ArrayList、LinkedList、Vector
 * ------------------------------------------------------
 * List集合的特点：
 * 1.List集合中的元素是有序的、可以重复的
 * 2.List集合中的元素都有其对应顺序的索引,索引下标从0开始
 * ------------------------------------------------------
 * List集合遍历：
 * Itreator、for循环、foreach
 * ------------------------------------------------------
 */
public class List_ {
    /**
     * list接口的常用方法,这里使用实现类ArrayList演示
     * @param args
     */
    public static void main(String[] args) {
        List list = new ArrayList();
        //1.add(),添加
        list.add("aaa");
        list.add("bbb");
        //add(),添加到指定索引的位置上
        list.add(0,"ccc");
        list.add("aaa");
        System.out.println(list);//[ccc, aaa, bbb, aaa]

        //2.addAll()添加多个元素
        List list2 = new ArrayList();
        list2.add("111");
        list2.add("222");
        list2.add("333");
        list.addAll(list2);
        System.out.println(list);//[ccc, aaa, bbb, aaa, 111, 222, 333]

        //3.get()获取指定索引位置上的元素,索引从0开始
        Object obj = list.get(2);
        System.out.println(obj);//bbb

        //4.indexOf()获取元素首次出现在集合中的索引,如果不存在返回-1
        int firstIndex = list.indexOf("aaa");//1
        int firstIndex2 = list.indexOf("dddd");//-1
        System.out.println(firstIndex);
        System.out.println(firstIndex2);

        //5.lastIndexOf()获取元素最后出现在集合中的索引,如果不存在返回-1
        int lastIndex = list.lastIndexOf("aaa");
        int lastIndex2 = list.lastIndexOf("dddd");
        System.out.println(lastIndex);//3
        System.out.println(lastIndex2);//-1

        //6.remove()删除集合中指定索引的元素
        list.remove(1);
        System.out.println(list);//[ccc, bbb, aaa, 111, 222, 333]

        //7.removeAll()删除集合中的所有元素
        list.removeAll(list2);
        System.out.println(list);//[ccc, bbb, aaa]

        //8.set()替换集合中指定索引的元素
        list.set(0,"哈哈哈");
        System.out.println(list);//[哈哈哈, bbb, aaa]

        //9.subList()截取集合中的元素,并返回一个子集合,包括开始索引位置的元素,不包括截止索引位置的元素
        List sonList = list.subList(0, 2);
        System.out.println(sonList);
    }
}
